---@coding utf8

require("xlib.xenv")

---@breif c++风格的Vector实现，基于table，类似py-Vector使用动态
---@class Vector: BaseClass
local Vector = xclass("Vector")

function Vector:_constructor()
    self.data = {}   -- 实际存放数据的table
    self.endpos = 2  -- 当前有效数据的下一个位置
end

function Vector:empty()
    return self.endpos <= 1
end

function Vector:size()
    return self.endpos - 1
end

function Vector:get_head()
    if self:empty() then
        error("read out of range")
        return
    end
    return self.data[1]
end

function Vector:push_tail(value)
    self.data[self.endpos-1] = value
end

